Proposal by Svatopluk Šperka for Concurrency Architectures in Smalltalk

Proposed by Svatopluk Šperka (profile, biography) Don't forget to submit this proposal to official Google Melange site too!


How will I do that project

I would like to bring the Actor Model into the Smalltalk environment. As actors can be seen as objects which are active in sense of carrying their execution concurrently (in context of other objects) and on its own. I believe this could be done by encapsulating a process in an object and modifying the code handling received messages and related internal mechanisms.

To support the Actor Model in its full extent several features need to be designed and implemented. First of all message queues, additionally to that probably some kind of a pattern matching of messages, locational transparency to eliminate differences between communicating with local and with remote actors, extension of developer tools, etc. All of this needs to be designed coherently with philosophy of the Smalltalk and as required - without modifying a particular VM. Most importantly this involves establishing coherency between the synchronous message-passing of the Smalltalk and the asynchronous message-passing of the Actor Model where senders are not blocked to wait for response. Great would be support for the Symmetric Multiprocessing for the Smalltalk but I guess that's a feature in a realm of the VM.

What methodologies will I use

As this is not a standalone project but an initiative to integrate a concept into existing environment I believe prototyping is an adequate methodology to adhere to. As more of relevant innards of the Smalltalk system will be explored, more usable and realistic implementation will emerge. I'm by far not an expert on a project planning or a controlled realization of a software but I hope that in a coordination with my mentor I will learn more about it and will be able to complete the project in an organized manner.

Suggested timeline and milestones

I believe it should take about two weeks to get familiar with necessary concepts and mechanisms of the Smalltalk execution model and to create a preliminary design.

Three weeks for a basic reference prototype and a fundamental support in a system.

Rest of the time would be tweaking, implementing related tools and support for developers.

I would prefer to start the documentation as soon as a design is stable.

Right now I sincerely believe it is possible to get the project to relatively usable stage at the provided period of time.  

Where I see the risks

As I'm not perfectly familiar with core of the Smalltalk, ideas and designs may be forced to shift to allow a smooth integration. Also some mechanisms will probably have to be found or invented to bypass VM modifications.

How the results will look like

Project concerns implementation of computational model and thus only aesthetic aspect involved is a code itself which apparently I can't provide ;) Its important aspect, however, should be an ease of comprehensibility and usability for Smalltalk developers with a basic idea of how the Actor model works.

Developer tools should adhere to established conventions of the Smalltalk's UI.




Updated: 10.4.2010